package com.maikobi.maikobi.common;

import lombok.Getter;

/**
 * 全局错误码枚举
 * @author: Maiko7
 * @create: 2025-07-13 15:22
 */
@Getter
public enum ErrorCode {

    // 通用成功/失败
    SUCCESS(0, "成功", ""),
    SYSTEM_ERROR(50000, "系统内部异常", "请联系管理员"),

    // 参数相关
    PARAMS_ERROR(40000, "请求参数错误", ""),
    NULL_ERROR(400001, "请求数据为空", ""),
    VALIDATION_ERROR(40001, "参数校验错误", ""),
    INVALID_REQUEST(40002, "无效的请求", "请求格式不正确或缺少必要信息"),

    // 用户相关
    USER_NOT_LOGIN(40100, "用户未登录", ""),
    USER_NOT_EXIST(40101, "用户不存在", ""),
    USER_LOGIN_ERROR(40102, "账号或密码错误", ""),
    USER_NOT_AUTH(40103, "用户无权限", ""),
    USER_EXIST(40204, "用户已存在", ""),
    NO_AUTH_ERROR(40104, "无权限", ""),

    // 注册/业务逻辑
    USER_ACCOUNT_EXIST(40200, "用户账号已存在", ""),
    USER_EMAIL_EXIST(40201, "用户邮箱已被注册", ""),
    USER_PHONE_EXIST(40202, "用户手机号已被注册", ""),
    PASSWORD_ERROR(40203, "两次密码不一致", ""),

    // 数据相关
    DATA_NOT_FOUND(40400, "数据不存在", ""),
    OPERATION_ERROR(40500, "操作失败", ""),

    // 访问限制
    TOO_MANY_REQUEST(42900, "请求过于频繁", "请稍后再试");




    /**
     * 状态码
     */
    private final int code;

    /**
     * 状态码信息
     */
    private final String message;

    /**
     * 状态码描述（详情）
     */
    private final String description;

    // 构造函数，初始化错误代码、消息和描述
    ErrorCode(int code, String message, String description) {
        this.code = code;
        this.message = message;
        this.description = description;
    }


}
